package data_structure.str;

/**
 * 解题的思路是先随意定义一个最长的公共前缀，然后分别与数组中的
 * 每一个元素进行对比，这个假定的最长子串不满足以这个元素开始
 * 那么缩短这个串，继续和进行对比
 */
public class LongestCommonPrefix {
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) return "";
        if (strs.length == 1) return strs[0];
        String result = strs[0];
        for (int i = 1; i < strs.length; i++) {
            if (!strs[i].startsWith(result)) {
                result = result.substring(0, result.length() - 1);
                i--;
            }

        }
        return result;
    }

    /**
     * 二进制字符串相加
     */
    public static String addBinary(String a, String b) {
        StringBuilder sb = new StringBuilder();
        int i = a.length() - 1;
        int j = b.length() - 1;
        int c = 0;//中间进位的那个数
        while (i >= 0 || j >= 0) {
            if (i >= 0) c += a.charAt(i--) - '0';
            if (j >= 0) c += b.charAt(j--) - '0';
            sb.append(c % 2);
            c >>= 1;
        }
        return c > 0 ? "1" + sb.reverse().toString() : sb.reverse().toString();
    }

    /** 查看字符串中第一个出现的字符*/

    public int firstUniqChar(String s) {
        for (int i = 0; i < s.length(); i++)
            if (s.indexOf(s.charAt(i)) == s.lastIndexOf(s.charAt(i)))
                return i;
        return -1;
    }
}
